package com.swn.common.util;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * 实现字典表请求并返回json列表
 * 
 * @author taozhaocai
 * @Date 2016-4-28  上午11:39:21
 * @Note <这里是该类的使用注意事项>

 */

@RequestMapping("/dic")
@Controller
public class DicController {
	@Autowired
	private JdbcTemplate jdbcTemplate;
	@Autowired
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	
	public static List<Map<String,Object>> dataCacheMapList = null;
	
	/**
	 * 根据前台传过来的字典主表的值将字典主表所属的字典信息数据返回到前端
	 * 
	 * @param dic_type
	 * @return List<Map<String,Object>>
	 *
	 * @Author taozhaocai
	 * @Date 2016-4-28 上午11:40:02 
	 * @Note 调用方式：http://localhost:8080/socialorg/dic/queryDic.action?dic_type=NATION
	 * 修改日期  修改人  修改内容
	 */
	@RequestMapping(value = "/queryDic")
	@ResponseBody
	public List<Map<String, Object>> queryDic (String dic_type){
		//参数map
		Map<String,Object> paramMap = new HashMap<String,Object>();
		
		paramMap.put("dic_type", dic_type);
		String  sql ="select dic_code,dic_name from cm_dic_details where dic_flag =1 and dic_type=:dic_type order by order_num";
		List<Map<String, Object>> mapList = null;
		try {
			mapList = namedParameterJdbcTemplate.queryForList(sql, paramMap);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return mapList;
}
	
	/**
	 * 根据字典表的dic_type和dic_code 返回字典名称,并做全局缓存处理
	 * 
	 * @param dic_type
	 * @param dic_code
	 * @return String
	 *
	 * @Author taozhaocai
	 * @Date 2016-4-28 下午5:17:54 
	 */
	@RequestMapping(value = "/queryDicName", produces = "application/json; charset=utf-8")
	@ResponseBody
	public String getDicName(String dic_type,String dic_code){
		if(dataCacheMapList == null ||dataCacheMapList.size()==0){
			dataCacheMapList = jdbcTemplate.queryForList("select dic_type,dic_code,dic_name from cm_dic_details where dic_flag =1 order by dic_code, order_num");
		}
		return getDicNameFromMapList(dic_type,dic_code);
	}
	
	
	/**
	 * 根据字典表的dic_type和dic_code 返回字典名称
	 * 
	 * @param dic_type
	 * @param dic_code
	 * @return String
	 *
	 * @Author taozhaocai
	 * @Date 2016-4-28 下午5:09:54 
	 */
	private String getDicNameFromMapList(String dic_type,String dic_code){
		String dic_name = "";
		List<Map<String,Object>> list = DicController.dataCacheMapList;
		for (int i = 0; i < list.size(); i++) {
			Map<String, Object> dataMap = list.get(i);
			String mapDicType = (String)dataMap.get("dic_type") ;
			String mapDicode  =  (String)dataMap.get("dic_code") ;
			/** 匹配字典类型和值 **/
			if(dic_type.equals(mapDicType)&& mapDicode.equals(dic_code)){
				dic_name = (String) dataMap.get("dic_name");
				break;
			}
		}
		
		return dic_name;
	}

}
